中世纪2-教你添加新兵种

您所在的位置:网站首页 中世纪2全面战争 不跳出版 中世纪2-教你添加新兵种

中世纪2-教你添加新兵种

2024-06-15 02:31| 来源: 网络整理| 查看: 265

游侠会员:sagius

声明:1. 这篇帖子的内容将涉及一些未经格式化的文件,对此的修改将十分繁琐。对修改兴趣不大的朋友,请参阅jyh4nt的相关论题:http://game1.ali213.net/thread-1324097-1-1.html2. 后面涉及的内容并非我的原创。国外的论坛上对此已有很深入的讨论。这里只是一些归纳和自己的感想。下面列出本文所参考的国外论坛里的帖子:http://forums.totalwar.org/vb/showthread.php?t=75706 http://www.twcenter.net/forums/showthread.php?t=773233. 所有将提到的修改,都作了测试并通过。在本文的最后,有测试修改后的文件下载,可供参考4. 因为不会贴图,所以在最后附加了所有内容的Word档可以下载,更加清晰明了

好了,我想,现在留下的都是有足够耐心,喜爱修改,甚至多过玩游戏本身的家伙们了。修改本身就是创造,所以,有一些东西,不弄清楚是不行的。中2发行已经很久了,但对于怎样添加新的部队,还是没有统一的解决方法。这里要讨论和实现的,是以下几点:1. 添加新的部队2. 为新加的部队挑选一个兵种贴图,可以是游戏里的任意一种,或是自己做的贴图3. 为这个部队挑选游戏中显示的兵牌,和部队介绍中显示的图案4. 为这个部队取一个名字,并且定义其兵种介绍(分为简单介绍和详细介绍)5. 修改建筑文件,使新部队可以在战役任务中被生产

之前在“添加兵种并显示其正常贴图”一文中,用了哥特下马骑士的例子。后来发现,这并不是一个很好的例子,因为把马的因素忽略了。东方国家是没有披甲马的,所以如果有人把Lancers改给土耳其,马就看不见了。所以,在这个帖子里用的是Lancers的例子——不是一般的Lancers,而是骑着骆驼的Lancers。并且把这个部队给了葡萄牙(既没有骆驼兵,也没有Lancers)。下面是效果图:

好,现在就开始一步一步修改..

1.添加新的部队这个是老生常谈,用任何一种文本编辑器打开游戏目录 data\export_descr_unit.txt 这个文件,搜索Lancers一词,找到其兵种描述的一段,复制下来。紧接着这一段,空两行,在每个空行上打两个空格,粘贴刚才复制的文字。修改其中的type, dictionary 和 ownship 这三项,最后的结果如下:

type Camel Lancersdictionary Camel_Lancers ; Lancerscategory cavalryclass heavyvoice_type Heavybanner faction main_cavalrybanner holy crusade_cavalrysoldier Lancers, 32, 0, 1mount camelmount_effect elephant -4, camel -4attributes sea_faring, hide_forest, hardy, can_withdraw, can_formed_charge, knightformation 2, 4.4, 3, 6, 2, square, wedgestat_health 1, 0stat_pri 13, 4, no, 0, 0, melee, melee_blade, piercing, spear, 0, 0.7;stat_pri_ex 0, 0, 0stat_pri_attr nostat_sec 14, 0, no, 0, 0, melee, melee_blade, piercing, sword, 0, 0.7;stat_sec_ex 0, 0, 0stat_sec_attr nostat_pri_armour 10, 6, 0, metal;stat_armour_ex 10, 11, 12, 0, 6, 0, 0, metalstat_sec_armour 0, 0, fleshstat_heat 6stat_ground 0, -2, -4, 0stat_mental 11, impetuous, trainedstat_charge_dist 45stat_fire_delay 0stat_food 60, 300stat_cost 1, 1130, 410, 130, 100, 1130, 4, 230armour_ug_levels 5, 6, 6armour_ug_models Lancers, Lancers, Lancersownership portugalera 2 portugal;unit_info 13, 0, 16

保存并退出2.贴图部分这里可能是最难的部分了。对于这部分我还会专门写帖子来讨论。游戏目录下data\unit_models\battle_models.modeldb 这个文件是用来指定贴图的,可以用文本编辑器打开。因为没有格式化的关系,很多人看到眼花,改了一下,不成功就放弃了。让我们再来看一看这个让人头痛的文件吧,这次或许有收获。我们搜索Lancers这个兵种,可以看到以下一段:

7 lancers 1 4 55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod0.mesh 121 55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod1.mesh 900 55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod2.mesh 2500 55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod3.mesh 6400 1 6 france 80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_france.texture 80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_normal.texture 40 unit_sprites/france_Gendarmes_sprite.spr 1 6 france 59 unit_models/AttachmentSets/Final Heater_france_diff.texture 59 unit_models/AttachmentSets/Final Heater_france_norm.texture 0 1 5 Horse 13 MTW2_HR_Lance 18 MTW2_HR_Non_Shield 1 21 MTW2_HR_Lance_Primary 1 18 MTW2_Sword_Primary 16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002

这个属于比较短的,应为只有法国可以造Lancers。根本没有办法看,不是吗。其实,这个不是给人看的,而是给机器看的。每次载入游戏的时候,都要读这个文件,因此格式至关重要。那么,有没有办法让机器和人都看得清楚呢?嗯,是有的,不过先要有几个原则:

1.所有代表字符长度的数字,必须和其后的字符在同一行中 2.所有格式中的空格,都要保留 3.否则,你连开始画面都没有看到,就会跳出(这个倒方便了测试)

好,我们试着格式化一下上面的这段文字:

[动画部分](字符长度 ->)7 lancers((字符长度 ->)1 4((字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod0.mesh 121((字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod1.mesh 900((字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod2.mesh 2500((字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod3.mesh 6400([贴图部分](可以用这个盔甲模型的国家数 ->)1(字符长度 ->)6 france(法国)(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_france.texture(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_normal.texture(字符长度 ->)40 unit_sprites/france_Gendarmes_sprite.spr((可以用这个附件模型的国家数 ->)1(字符长度 ->)6 france(法国)(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_diff.texture(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_norm.texture 0[武器部分](下面关于坐骑描述的行数 ->)1(坐骑为马 ->)Horse(字符长度 ->)13 MTW2_HR_Lance((字符长度 ->)18 MTW2_HR_Non_Shield((下面关于武器描述的行数 ->)1(字符长度 ->)21 MTW2_HR_Lance_Primary((下面关于武器描述的行数 ->)1(字符长度 ->)18 MTW2_Sword_Primary(16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002(

这样的格式是不是清楚一点了呢?关键是,这样的格式,电脑也看得懂!!当然,所有原格式中的空格都要保留。如果谁有毅力把battle_models.modeldb整个文件都转成这样的格式,绝对是大功一件。现在的任务是,让葡萄牙也可以使用Lancers模型。红色是经过变更的地方,蓝色是经过添加的地方,修改如下:

[动画部分](字符长度 ->)7 lancers((字符长度 ->)1 4((字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod0.mesh 121((字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod1.mesh 900((字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod2.mesh 2500((字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod3.mesh 6400([贴图部分](可以用这个盔甲模型的国家数 ->)2(字符长度 ->)8 portugal(法国)(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_france.texture(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_normal.texture(字符长度 ->)40 unit_sprites/france_Gendarmes_sprite.spr((字符长度 ->)6 france(法国)(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_france.texture(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_normal.texture(字符长度 ->)40 unit_sprites/france_Gendarmes_sprite.spr((可以用这个附件模型的国家数 ->)2(字符长度 ->)8 portugal(法国)(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_diff.texture(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_norm.texture 0(字符长度 ->)6 france(法国)(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_diff.texture(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_norm.texture 0[武器部分](下面关于坐骑描述的行数 ->)1(坐骑为马 ->)Horse(字符长度 ->)13 MTW2_HR_Lance((字符长度 ->)18 MTW2_HR_Non_Shield((下面关于武器描述的行数 ->)1(字符长度 ->)21 MTW2_HR_Lance_Primary((下面关于武器描述的行数 ->)1(字符长度 ->)18 MTW2_Sword_Primary(16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002(

如果理解了以上内容,那么,接下来让葡萄牙可以使用骆驼就成为依样画葫芦了。坐骑的描述在同一文件的一开始。我们搜索camel,得到下面这段:

11 mount_camel 1 4 46 unit_models/Mounts/Camel/mount_camel_lod0.mesh 121 46 unit_models/Mounts/Camel/mount_camel_lod1.mesh 900 46 unit_models/Mounts/Camel/mount_camel_lod2.mesh 2500 46 unit_models/Mounts/Camel/mount_camel_lod3.mesh 10000 4 5 moors 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 41 unit_sprites/moors_Mount_Camel_sprite.spr 5 egypt 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 41 unit_sprites/egypt_Mount_Camel_sprite.spr 5 slave 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 41 unit_sprites/slave_Mount_Camel_sprite.spr 4 merc 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 40 unit_sprites/merc_Mount_Camel_sprite.spr 0 1 5 Horse 8 fs_camel 0 0 0 -1 0 0 0 0 0 0

把它改成:

11 mount_camel 1 4 46 unit_models/Mounts/Camel/mount_camel_lod0.mesh 121 46 unit_models/Mounts/Camel/mount_camel_lod1.mesh 900 46 unit_models/Mounts/Camel/mount_camel_lod2.mesh 2500 46 unit_models/Mounts/Camel/mount_camel_lod3.mesh 10000 58 portugal 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 41 unit_sprites/moors_Mount_Camel_sprite.spr 5 moors 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 41 unit_sprites/moors_Mount_Camel_sprite.spr 5 egypt 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 41 unit_sprites/egypt_Mount_Camel_sprite.spr 5 slave 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 41 unit_sprites/slave_Mount_Camel_sprite.spr 4 merc 47 unit_models/Mounts/Camel/textures/camel.texture 54 unit_models/Mounts/Camel/textures/camel_normal.texture 40 unit_sprites/merc_Mount_Camel_sprite.spr 0 1 5 Horse 8 fs_camel 0 0 0 -1 0 0 0 0 0 0

这样,葡萄牙就有骆驼骑了!

注意:1.建议添加在所有已有国家的前面(这里是把葡萄牙加在法国的前面),这样可以避免出错2.如果有盔甲升级,也要为所有盔甲等级作如此的添加,否则升级后的部队无法显示。升级后的模型名称是原名称加级别名,如lancers的升级模型是lancers_ug1,lancers_ug2等等(只是举个例子,实际上lancers的盔甲不能升级)3.不要简单复制上面的代码。要严格按照原格式的空格数,否则游戏跳出

3.兵牌如果你能坚持看到这里,那么恭喜你,最烦人的操作已经过去,接下来的内容,对你来说绝对是小儿科。一个兵种拥有两个图片文件,我们以葡萄牙为例:

1.存放在data\ui\units\portugal下的tga文件,是在打仗时列于屏幕底部该兵种的兵牌,文件名和export_descr_unit.txt中该兵种的dictionary要一致2.存放在data\ui\unit_info\portugal下的tga文件,是当鼠标右击该兵种兵牌所显示的详细信息中的图片,要比兵牌图片大不少现在的工作就很简单了。偷懒的话,找到法国文件夹里Lancers的图片,复制到葡萄牙的文件夹里,再把名字分别改为camel_lancers.tga和camel_lancers_info.tga就好了。有特殊爱好的人可以自己修改图片,或者加上一只骆驼会更合适一点…

4.兵种介绍到现在为止,如果一切顺利的话,我们已经可以看到骑着骆驼的Lancers在自定义战役里一颠一颠的了(我真的一点不觉得他们骑骆驼的样子很好看)。不过当你的鼠标放在他的兵牌上,或者查看他的详细信息的时候,都不会有文字显示。这是应为我们还没有给我们的新兵命名。这里我们可以不去修改data\export_descr_unit_enums.txt文件,不会有任何问题。我们要关心的实际上是data\text\export_units.txt.strings.bin这个文件。不过,你可能已经猜到了,这又是一个未经格式化的文件(可恶的CA)。为了修改它,你需要strings.bin converter这个程序,你可以在本文的末尾看到他的下载链接。使用它很简单,把文件复制到data\text下,然后执行convert_all.bat。一些未格式化的文件会被转成格式化好的内容,其中就包括export_units.txt.strings.bin转化而成的export_units.txt。我们的目标就是export_units.txt,打开他,在一开始(第二行)插入以下几行:

{Camel_lancers}Camel Lancers{Camel_lancers_descr}This is the lang introduce text about it{Camel_lancers_descr_short}This is the short one about it

你可以用任何其他的字段替换{}以后的文字,然后储存退出。你可以再进入游戏看看。

5.修改建筑文件还差一步就完美了。现在我们要把刚做好的骆驼Lancers放到战役任务中去,使它可以被葡萄要生产出来。这次要修改的文件是export_descr_buildings.txt。搜索找到building core_building,这个是城市的城墙。我们在每一级城墙的capability里面插入:recruit_pool "Camel Lancers" 4 0.5 4 0 requires factions { Normans, }四个数字分别代表招募数,补充速度,招募上限,士兵经验值(0到9)。这样,只要你有城市,这个城市就有“骆驼Lancers”可供招募了。

好了,现在你可以对自己说,“我差不多知道该怎么添加新兵种了。说不定以后可以试着做自己的MOD”。恭喜你!

最后的注意:或许是我多嘴了,因为能看到这里的人,应该不会犯这样的错误:你要确认你的修改会起作用。到底是该修改原版data下的文件,还是mod里data下的文件,或者两个data下的文件都有一部分要修改。这要你自己决定。不管如何,你要让你的修改起作用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3